package com.cancer.common.util;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

/**
 * 提供字符编码转换
 * 
 * @author 刘俊
 * @time 2014年5月16日
 */
public final class EncodingUtil {
	/**
	 * 将iso-8859-1转为utf-8
	 * 
	 * @param value
	 *            要转的字符串
	 * @return
	 */
	public static String toUTF8(String value) {
		if (value == null) {
			return null;
		}
		String ok = null;
		try {
			ok = new String(value.getBytes("iso-8859-1"), "utf-8");
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException("转换编码时出现了错误[" + e.getCause() + "]");
		}
		return ok;
	}

	/**
	 * 将第一个参数的编码转为第二个参数的编码
	 * 
	 * @param strEncoding
	 *            原来的编码
	 * @param descEncoding
	 *            转换后的编码
	 * @param value
	 *            要转换的值
	 * @return
	 */
	public static String conver(String strEncoding, String descEncoding, String value) {
		String ok = null;
		try {
			ok = new String(value.getBytes(strEncoding), descEncoding);
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException("转换编码时出现了错误[" + e.getCause() + "]");
		}
		return ok;
	}
	
	public static String encode(String value, String coding) {
		try {
			return URLEncoder.encode(value, coding.toUpperCase());
		} catch (Exception e1) {
			return value;
		}
	}
	/**
	 * 将字符串以UTF8的格式编码. 若发生编码异常则返回原字串
	 * 
	 * @author 刘俊 2014年11月13日
	 * @param value
	 * @return
	 */
	public static String encodeUTF8(String value) {
		try {
			return URLEncoder.encode(value, "UTF-8");
		} catch (Exception e1) {
			return value;
		}
	}
	
	/**
	 * 将字符串以UTF8的格式解码. 若发生编码异常则返回原字串
	 * 
	 * @author 刘俊 2014年11月13日
	 * @param value
	 * @return
	 */
	public static String decodeUTF8(String value) {
		try {
			return URLDecoder.decode(value, "UTF-8");
		} catch (UnsupportedEncodingException e1) {
			return value;
		}
	}
	public static String decode(String value, String coding) {
		try {
			return URLDecoder.decode(value, coding.toUpperCase());
		} catch (UnsupportedEncodingException e1) {
			return value;
		}
	}
}
